
Object { "{" (Pair ("," Pair)*)? "}" }

Pair { String ":" Value }

Array { "[" (Value ("," Value)*)? "]" }

Value { String | Number | Object | Array | Boolean | Null }

String { "\"(([^\"\\])|(\\([\"\\/bfnrt]|u[\da-fA-F]{4})))*\"" }

Number { Int | Float }

Int { "[\+\-]?[1-9][0-9]*" }

Float { "[\+\-]?([0-9]+\.[0-9]*([eE]([\+\-])?([0-9])+)?)|(\.[0-9]+([eE]([\+\-])?([0-9])+)?)|([0-9]+([eE]([\+\-])?([0-9])+)?)" }

Boolean { "true" | "false" }

Null { "null" }

